查看原文
其他

终于有人把敏捷、DevOps、CI、CD讲清楚了

Cloud研习社 Cloud研习社 2023-06-06




DevOps是什么?



DevOps是Development和Operations的组合,是一种方法论,是一组过程、方法与系统的统称,旨在加强“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间的沟通合作,提高沟通与协作的效率,以便实现更快、更可靠的发布更高质量的产品。


DevOps落地实施从组织架构、设计人员、流程、人员分工、人员技到工具变化很大,要求很高,完覆了现有的开发运维模式其中DevOps的主要核心是自动化,自动化代码测试、部署和发布。

要实现开发和运维的合并并且自动化,要通过执行CI/CD流程来完成代码开发,自动化测试,自动部署测试,自动发布等。


CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题。

具体来说,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为"CI/CD 流程":



CI




持续集成(Continuous Integration ,CI)。它属于开发人员的自动化流程。开发人员将会频繁地向主干提交代码,这些新提交的代码在最终合并到主干前,需要经过编译和自动化测试进行验证,并最终合并到代码库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。




CD


CD可对应多个英文名称,持续交付Continuous Delivery和持续部署Continuous Deployment。下面分别介绍。

01

持续交付



持续交付通常是指开发人员对应用的更改会自动进行错误测试【即:CI流程】并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。
在持续交付中,每个阶段(从代码更改的合并,到生产标准构建版本的交付)都涉及测试自动化和代码发布自动化。
因此,持续交付的目的就是尽可能减少部署新代码时所需的工作量,确保拥有一个可随时部署到生产环境的代码库。

02

持续部署


对于一个成熟的 CI/CD 流程来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。

实际上,持续部署意味着开发人员对应用的更改都会被自动部署到生产环境中。总之,所有这些 CI/CD 的关联步骤都有助于降低应用的部署风险,因此更便于以小件的方式(而非一次性)发布对应用的更改。

BTW,由于还需要编写自动化测试以适应 CI/CD 流程中的各种测试和发布阶段,因此前期投资还是会很大。

小结:

  • 持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。

  • 持续交付并不是指软件每一个改动都要尽快部署到产品环境中,它指的是任何的代码修改都可以在任何时候实施部署。

  • 持续交付表示的是一种能力,而持续部署是以持续交付为前提。



敏捷开发



敏捷开发着重于一种开发的思路(或者叫一种项目管理思想),拥抱变化和快速迭代。强调人际互动、快速和频繁的交付、增量价值交付、分散价值、客户协作反馈循环和持续改进。

敏捷开发需要技术(架构设计等)和项目经理共同打造才能实现。

敏捷方法的好处体现在产品方面:消费者对敏捷产品的满意度更高,因为它们及时的满足了客户的需求。





敏捷、CI、CD、DevOps的关系




为了DevOps落地实施敏捷开发能保证快速做出内容,然后需要通过CI/CD一系列的流程组成的工具来进行快速验证迭代的功能,最终达到DevOps的目的:快速向用户交付高质量的软件产品。即:

  • 敏捷专注于快速交付的同时,满足变化的需求(突出变化);

  • CI/CD专注于软件定义的生命周期,强调自动化的工具;

  • DevOps专注于文化、方法论,强调各工作角色的协同。



(图片来源于网络,侵删)
推荐阅读

Linux 网络状态工具 ss 命令详解

这次终于搞明白VLAN技术了

万字好文,最全 VxLAN 知识详解

放后台的Linux任务没有了,试试这个命令

我是如何用10分钟理解Kubernetes的


除每周二、四、六定期更新的《Linux云计算一站式教程》以外,其余时间雷哥会推送一些工作中遇到的小知识、实战经验总结的文章。后续都会收录在“实战经验”合集中。




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存